# 切片操作
a = [1, 2, 3, 4]
print(a[1:3])
# [1:3] 表示列表中的一段区间
# 范围是前闭后开的 [1, 3)

# 可以省略边界
b = [1, 2, 3, 4]
print(b[1:]) # 从下标1到最后
print(b[:2]) # 从最开始到下标2, 前闭后开区间
print(b[:]) # 可以都省略，打印列表全部元素

# 切片还可以指定步长
c = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(c[::1]) # 步长为1
print(c[::2]) # 步长为2
print(c[1:6:2]) # 限制范围
# 如果步长是负数, 就是从后往前取

# 遍历列表元素
# 1.用for循环遍历
for i in a:
    print(i)

# 2.使用for循环遍历，通过下标的方式
for i in range(0, len(a)):
    print(a[i])
# 这种方式不仅可以打印，还可以修改

# 3.while循环遍历
i = 0
while i < len(a):
    print(a[i])
    i += 1

# 列表新增元素
d = [1, 2, 3, 4]
d.append(5)
d.append('yss')
print(d)

d.insert(1, 100)
print(d)

# 查找元素
e = [1, 2, 3, 4]
print(1 in e)
print(10 in e)
print(1 not in e)
print(10 not in e)

# 使用index方法，判断元素的位置，得到下标
print(e.index(2))
print(e.index(3))
#print(e.index(10)) # 会报错

# 删除元素
# pop  删除最后一个元素
f = [1, 2, 3, 4]
print(f)
f.pop()
print(f)

# pop 可以删除任意位置元素，传下标
f.pop(1)
print(f)

# remove 按照值来删除
g = ['aa', 'bb', 'cc', 'dd']
print(g)
g.remove('cc')
print(g)

# 拼接列表 产生新的列表
y = e + f
print(y)

# extend拼接
# 把后一个列表拼接到前一个列表 改变前一个列表
a = [1 ,2 ,3, 4]
b = [5, 6, 7, 8]
c = a.extend(b)
print(a)
print(b)
print(c)

# += 也能拼接
a = [1, 2, 3 ,4]
b = [5, 6, 7, 8]
a += b
print(a)
print(b)
